home *** CD-ROM | disk | FTP | other *** search
- Path: tbj.dec.com!diamond
- From: diamond@tbj.dec.com (Norman Diamond)
- Newsgroups: comp.std.c
- Subject: Re: offsetof() and `address constant expression': LONG
- Date: 13 Apr 1996 01:32:46 GMT
- Organization: Digital Equipment Corporation Japan , Tokyo
- Message-ID: <4kn07u$fqf@usenet.pa.dec.com>
- References: <4kk988$rt2@falcon.ccs.uwo.ca>
- Reply-To: diamond@tbj.dec.com (Norman Diamond)
- NNTP-Posting-Host: jit533.tbj.dec.com
-
- In article <4kk988$rt2@falcon.ccs.uwo.ca>, Dave Kinchlea
- <kinch@julian.uwo.ca> writes 100 lines more than this:
- >Seems pretty clear that the use below does not fit this description
- >[arguments to offsetof] but I would like some confirmation before I
- >send this back to the author. [...]
- >ICELLS is a macro (100) and cells is an integer.
-
- Sounds like you already got it:
-
- >On Thu, 11 Apr 1996, Roger Glover wrote:
- >>> bp = (Block*) malloc(offsetof(Block, cell[ICELLS + cells]));
- >> Plauger and Brodie's "Standard C Quick Reference" [...] says [...]
- >> #define offsetof(s-type,mbr) <size_t constant expression>
- >> The macro yields the offset in bytes of member mbr from the beginning
- >> of structure type s-type, where for X of type s-type, &X.mbr is an
- >> address constant expression.
-
- Looks like Plauger and Brodie forgot to say *static* X of type s-type.
- However, they got the rest of it right.
-
- >> Well let's break that down a bit. &X.mbr must be constant,
-
- Yes. And the standard's section on constant expressions, paragraph on
- address constants, says: "[...] but the value of an object shall not be
- accessed by one of these operators." So the + operator which accesses
- the value of cells does not yield a constant expression.
- --
- << If this were the company's opinion, I would not be allowed to post it. >>
- "I paid money for this car, I pay taxes for vehicle registration and a driver's
- license, so I can drive in any lane I want, and no innocent victim gets to call
- the cops just 'cause the lane's not goin' the same direction as me" - J Spammer
-